home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-28 | 2.7 KB | 166 lines | [TEXT/PJMM] |
- program EventMaster;
- const
- kBaseResID = 128;
- kSleep = $FFFFFFFF;
- kRowHeight = 14;
- kFontSize = 9;
- kMouseDown = 1;
- kMouseUp = 2;
- kKeyDown = 3;
- kAutoKey = 4;
-
- var
- gDone: BOOLEAN;
- gLastEvent: INTEGER;
-
- {————————————————> DrawFrame <—-}
-
- procedure DrawFrame (eventType: INTEGER);
- var
- r: Rect;
- window: WindowPtr;
- begin
- window := FrontWindow;
- r := window^.portRect;
-
- r.top := kRowHeight * (eventType - 1);
- r.bottom := r.top + kRowHeight - 1;
-
- FrameRect(r);
- end;
-
- {————————————————> SelectEvent <—-}
-
- procedure SelectEvent (eventType: INTEGER);
- var
- r: Rect;
- window: WindowPtr;
- begin
- window := FrontWindow;
- r := window^.portRect;
-
- if gLastEvent <> 0 then
- begin
- ForeColor(whiteColor);
- DrawFrame(gLastEvent);
- ForeColor(blackColor);
- end;
-
- DrawFrame(eventType);
-
- gLastEvent := eventType;
- end;
-
- {————————————————> DrawContents <—-}
-
- procedure DrawContents;
- var
- i: INTEGER;
- window: WindowPtr;
- begin
- window := FrontWindow;
-
- for i := 1 to 3 do
- begin
- MoveTo(0, (kRowHeight * i) - 1);
- LineTo(window^.portRect.right, (kRowHeight * i) - 1);
- end;
-
- MoveTo(4, 9);
- DrawString('mouseDown');
-
- MoveTo(4, 9 + kRowHeight);
- DrawString('mouseUp');
-
- MoveTo(4, 9 + kRowHeight * 2);
- DrawString('keyDown');
-
- MoveTo(4, 9 + kRowHeight * 3);
- DrawString('autoKey');
-
- if gLastEvent <> 0 then
- DrawFrame(gLastEvent);
- end;
-
- {————————————————> HandleMouseDown <—-}
-
- procedure HandleMouseDown (event: EventRecord);
- var
- window: WindowPtr;
- thePart: INTEGER;
- begin
- thePart := FindWindow(event.where, window);
-
- if thePart = inGoAway then
- gDone := true;
- end;
-
- {————————————————> DoEvent <—-}
-
- procedure DoEvent (event: EventRecord);
- begin
- case event.what of
- mouseDown:
- begin
- SelectEvent(kMouseDown);
- HandleMouseDown(event);
- end;
- mouseUp:
- SelectEvent(kMouseUp);
- keyDown:
- SelectEvent(kKeyDown);
- autoKey:
- SelectEvent(kAutoKey);
- updateEvt:
- begin
- BeginUpdate(WindowPtr(event.message));
- DrawContents;
- EndUpdate(WindowPtr(event.message));
- end;
- end;
- end;
-
- {————————————————> EventLoop <—-}
-
- procedure EventLoop;
- var
- event: EventRecord;
- begin
- gDone := FALSE;
-
- while gDone = FALSE do
- begin
- if WaitNextEvent(everyEvent, event, kSleep, nil) then
- DoEvent(event);
- end;
- end;
-
- {————————————————> WindowInit <—-}
-
- procedure WindowInit;
- var
- window: WindowPtr;
- begin
- window := GetNewWindow(kBaseResID, nil, WindowPtr(-1));
-
- if window = nil then
- begin
- SysBeep(10);
- ExitToShell;
- end;
-
- SetPort(window);
- TextSize(kFontSize);
-
- ShowWindow(window);
- end;
-
- {————————————————> EventMaster <—-}
-
- begin
- gLastEvent := 0;
-
- WindowInit;
-
- EventLoop;
- end.